package com.gitee.ice1938.module.admin.sysoption.fun;

import java.util.List;
import java.util.Map;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;

@Service
public class OptionServiceImpl implements OptionService, ApplicationContextAware {

	@Autowired
	private OptionsRepository optionsRepository;

	private ApplicationContext applicationContext;

	@Override
	public String findOption(String optionName) {
		return optionsRepository.getOption(optionName);
	}

	@Override
	public List<Map<String, Object>> findOptions(String... optionName) {
		return optionsRepository.queryOptions(optionName);
	}

	@Override
	public int saveOption(String optionName, String optionValue) {
		int flag = optionsRepository.saveOption(optionName, optionValue);
		if (flag > 0) {
			applicationContext.publishEvent(new OptionChangedEvent(optionName));
		}
		return flag;
	}

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		this.applicationContext = applicationContext;
	}

	@Override
	public int initOption(String optionName, String optionValue, String optionTilte, String optionDesc) {
		return optionsRepository.insertOption(optionName, optionValue, optionTilte, optionDesc);
	}

	@Override
	public String siteurl() {
		return optionsRepository.getOption(siteurl);
	}

}
